<?php
/**
 * Created by PhpStorm.
 * User: LYD
 * Date: 2019/1/28
 * Time: 22:44
 */
//模板类
class Templates{
    private $_vars = array(); //创建数组，用于存放模板变量

    //创建一个构造方法，验证各个目录是否存在
    public function __construct()
    {
        if(!is_dir(TPL_DIR) || !is_dir(CACHE) || !is_dir(TPL_C_DIR)){
            exit("模板目录或编译目录或缓存目录不存在！请手工设置！");
        }
    }
    //将模板导入到php文件中
    public function display($_tplWj){
        //设置模板文件的路径
        $_tplFile = TPL_DIR.$_tplWj;
        //判断模板文件是否存在
        if(!file_exists($_tplFile)){
            exit("模板文件不存在");
        }
        //设置编译文件的文件名
        $_parFile = TPL_C_DIR.$_tplWj.".php";
        //设置缓存文件
        $_cacheFile = CACHE.$_tplWj.".html";
        //判断是否启用的缓存机制
        if(IS_CACHE){
            //判断是否存在缓存文件与编译文件
            if(file_exists($_cacheFile) || file_exists($_parFile)){
                //判断模板文件是否修改过，编译文件是否修改过
                if(fileatime($_parFile) >= fileatime($_tplFile) && fileatime($_cacheFile) >= fileatime($_parFile)){
                    include $_cacheFile;
                    return;
                }
            }
        }
        //判断编译文件是否存在，模板文件是否修改过
        if(!file_exists($_parFile) || fileatime($_tplFile) >= fileatime($_parFile)) {
            require ROOT_PATH."/includes/Parser.class.php";
            $parser = new Parser($_tplFile);
            $parser->compile($_parFile);
        }
        include $_parFile;
        if(IS_CACHE){
            //获取缓存区的文件，并且创建缓存文件
            file_put_contents($_cacheFile,ob_get_contents());
            ob_end_clean(); //清除缓冲区
            include $_cacheFile;    //载入缓存文件
        }

    }

    //创建变量注入的方法
    public function assign($_var, $_value){
        //$_var 表示模板里面的变量名，$_value 是php文件里声明的变量名
        if(isset($_var) && !empty($_var)){
            $this->_vars[$_var] = $_value;
        }else{
            exit("设置变量");
        }
    }
}
?>